Bug #520395. Notify the insert signal in the idle function. Let text_util
authorLi Yuan <li.yuan@sun.com>
Wed, 25 Feb 2009 09:45:37 +0000 (09:45 +0000)
committerLi Yuan <liyuan@src.gnome.org>
Wed, 25 Feb 2009 09:45:37 +0000 (09:45 +0000)
2009-02-25  Li Yuan  <li.yuan@sun.com>

        * gailentry.c: (gail_entry_real_notify_gtk),
        (gail_entry_idle_notify_insert), (_gail_entry_insert_text_cb):
        Bug #520395. Notify the insert signal in the idle function. Let
        text_util has chance to update cache.

svn path=/trunk/; revision=22404

modules/other/gail/ChangeLog
modules/other/gail/gailentry.c

index 6b69abacc1c068384c4f73b4a3282995233650e1..1057cd83c1e6b1c136d1c753d92379b19defe85a 100644 (file)
@@ -1,3 +1,10 @@
+2009-02-25  Li Yuan  <li.yuan@sun.com>
+
+       * gailentry.c: (gail_entry_real_notify_gtk),
+       (gail_entry_idle_notify_insert), (_gail_entry_insert_text_cb):
+       Bug #520395. Notify the insert signal in the idle function. Let
+       text_util has chance to update cache.
+
 2009-02-25  Li Yuan  <li.yuan@sun.com>
 
        * gailtreeview.c: (is_cell_showing):
index e1f23318110a481eb6e990759f75313599897b93..f426f5639f9dc621acb3101aee58aafd0ef8f3dd 100644 (file)
@@ -131,6 +131,7 @@ static void       gail_entry_paste_received    (GtkClipboard *clipboard,
 
 /* Callbacks */
 
+static gboolean   gail_entry_idle_notify_insert    (gpointer data);
 static void       gail_entry_notify_insert         (GailEntry            *entry);
 static void       gail_entry_notify_delete         (GailEntry            *entry);
 static void      _gail_entry_insert_text_cb       (GtkEntry             *entry,
@@ -252,7 +253,8 @@ gail_entry_real_notify_gtk (GObject         *obj,
 
   if (strcmp (pspec->name, "cursor-position") == 0)
     {
-      gail_entry_notify_insert (entry);
+      if (entry->insert_idle_handler == 0)
+        entry->insert_idle_handler = gdk_threads_add_idle (gail_entry_idle_notify_insert, entry);
 
       if (check_for_selection_change (entry, gtk_entry))
         g_signal_emit_by_name (atk_obj, "text_selection_changed");
@@ -264,7 +266,8 @@ gail_entry_real_notify_gtk (GObject         *obj,
     }
   else if (strcmp (pspec->name, "selection-bound") == 0)
     {
-      gail_entry_notify_insert (entry);
+      if (entry->insert_idle_handler == 0)
+        entry->insert_idle_handler = gdk_threads_add_idle (gail_entry_idle_notify_insert, entry);
 
       if (check_for_selection_change (entry, gtk_entry))
         g_signal_emit_by_name (atk_obj, "text_selection_changed");
@@ -1001,7 +1004,7 @@ gail_entry_paste_received (GtkClipboard *clipboard,
 /* Callbacks */
 
 static gboolean
-idle_notify_insert (gpointer data)
+gail_entry_idle_notify_insert (gpointer data)
 {
   GailEntry *entry;
 
@@ -1051,7 +1054,7 @@ _gail_entry_insert_text_cb (GtkEntry *entry,
    * or in an idle handler if it not updated.
    */
    if (gail_entry->insert_idle_handler == 0)
-     gail_entry->insert_idle_handler = gdk_threads_add_idle (idle_notify_insert, gail_entry);
+     gail_entry->insert_idle_handler = gdk_threads_add_idle (gail_entry_idle_notify_insert, gail_entry);
 }
 
 static gunichar